package com.itshizhan.designpattern.iterator;

/**
 * 具体的迭代器 Concrete Iterator
 * 负责实现Iterator接口中定义的迭代方法
 * index: 书的下标
 *
 */
public class BookShelfIterator implements Iterator {
    private BookShelf bookShelf;
    private int index;

    /**
     * 具体迭代器的核心构造器
     * 1. 确定当前迭代的元素
     * 2. 将当前的下表默认为0
     * @param bookShelf
     */
    public BookShelfIterator(BookShelf bookShelf) {
        this.bookShelf = bookShelf;
        this.index = 0;
    }

    /**
     * 下标不是最后一个，说明还有
     * 否则，遍历完成
     * @return
     */
    @Override
    public boolean hasNext() {
        if (index < bookShelf.getLength()) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 返回指定下标的书籍
     * 同时将下标加加，指向下一个待遍历的书籍
     * @return
     */
    @Override
    public Object next() {
        Book book = bookShelf.getBookAt(index);
        index++;
        return book;
    }
}
